<?php

namespace Sharks\Core\Support\Base;

/**
 * 通过类的魔术方法, 设置类的只读属性
 * 使用的类必须使用
 *      const READ_ONLY = array('propertyName1', 'propertyName2', ...);//私有属性名
 *      const READ_ONLY_FUNC = array('funcName1', 'funcName2');// 无参函数
 *
 * FIXME 如何判断静态变量存在
 */
trait PropertiesReadOnly {

    public function __get($name) {
        if (isset(static::$READ_ONLY) && in_array($name, static::$READ_ONLY)) {
            return $this->$name;
        }
        elseif (isset(static::$READ_ONLY_FUNC) && in_array($name, static::$READ_ONLY_FUNC)) {
            return $this->$name();
        }
    }
}